package com.wpp;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Iterator;

/*
 *ArrayList源码分析
 *   jdk7:
 *       ArrayList arraylist = new ArrayList();底层创建了长度为10的object[]数组
 *       list.add();如果此次的添加导致底层数组容量不够，则需要扩容，默认情况下，扩容为原来的1.5倍，扩容则需要把原来的数组赋值到另外一个扩容数组中
 *       建议：开发中使用带参的构造器
 *   jdk8:
 *       ArrayList arraylist = new ArrayList();底层初始化为{}，并没有创建长度为10的数组
 *       list.add();第一次调用add()时，底层才创建了长度10的数组，如果此次的添加导致底层数组容量不够，则需要扩容，默认情况下，扩容为原来的1.5倍，扩容则需要把原来的数组赋值到另外一个扩容数组
 *   小结：jdk7中的ArrayList的创建类似于单例的饿汉式。而jdk8中的ArrayList的创建类似于单例模式的懒汉式
 *
 *
 * */
public class ArrayList源码分析 {

    /**
    *用于测试:
    *
    */
    @Test
    public void test(){

        ArrayList<Object> objects = new ArrayList<Object>();
        objects.add("23");
        objects.add("24");
        objects.add("25");
        objects.add("26");

        Iterator<Object> iterator = objects.iterator();
        while (iterator.hasNext()){
            Object a = iterator.next();
            System.out.println(a);
        }

    }
}
